package org.aplikator.server.descriptor;

import org.aplikator.client.shared.data.ListItem;
import org.aplikator.server.Context;
import org.aplikator.server.util.Configurator;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public interface ListProvider {

	List<ListItem> getListValues(Context ctx);

	public static class Default implements ListProvider {

		private final List<ListItem> values;

		public Default(ListItem... items) {
			values = Arrays.asList(items);
		}

		public Default(List<ListItem> vals) {
			values = vals;
		}

		public List<ListItem> getListValues(Context ctx) {

			List<ListItem> clientListValues = new ArrayList<ListItem>(
					values.size());
			for (ListItem item : values) {
				ListItem clientItem = new ListItem.Default(
						item.getValue(), Configurator.get().getLocalizedString(
								item.getName(), ctx.getUserLocale()));
				clientListValues.add(clientItem);
			}
			return values;
		}
	}
}
